Link to this headingFault Injection
Software:
Hardware:
Link to this headingChipWhisperer
ChipWhisperer is an Open-source software, hardware, for Fault Injection on embedded systems.
Interactive ChipWhisperer tutorials using Jupyter notebooks.
Power Analysis 101: From Skipping Passwords to Breaking Software Symmetric Encryption
Link to this headingClock Fault Injection
Link to this headingPower/Voltage Fault Injection
Link to this headingControlling the Program Counter
Instruction Corruption:
Instruction Skipping:
Controlling the PC using LDR:
Controlling the PC using LDMIA:
Link to this headingRSA Fault Injection
Injecting a fault on the correct place
Using fault injection with RSA on known input and output with the public key provides information needed to recover the private key
Link to this headingRSA Signature Example
Math Breakdown:
d_p = d \pmod{p-1} \\
d_q = d \pmod{q-1} \\
\\
K = p^{-1} \pmod{q} \\
\\
S_p = M^{d_p} \pmod{p} \\
S_q = M^{d_q} \pmod{q} \\
\\
S = (((S_q - S_p) * K) \pmod{q}) *p + S_p
Link to this headingCountermeasures
Double Checking:
short
Verify Signatures:
short
Traps:
byte result = SOME_VALUE;
byte resultChecksum = ~SOME_VALUE;
...
if
Random Delay:
short
Link to this headingAES Differential Fault Attack
- Faults in the same column are non-distinguishable
Round 9 Fault injection:
Injecting a fault in a random byte at the beginning of the 9th Mix Columns operation propagates through the shift row in round 10.
This means that one injection can effect 4 output bytes. Using the correct [AES](/Crypto/Symmetric Encryption/AES) with the faulty AES output can decrease the key size from 32 bits to 8 bits
Round 8 Fault Injection:
Injecting a fault in a random byte at the beginning of the 8th Mix Columns operation propagates through the shift rows in round 9.
This fault then also propagates through the mix columns in the 9th round and the shift row in the 10th round.
With one correct and one fault pair with a 32-bit brute force it is possible to recover a 128 bit key.
Link to this headingSingle fault Disadvantages
Fault location must be known if not the search space multiplies
- Unknown byte multiplies search space by 4
- Unknown round multiplies search space by 10
- Unknown operation hit messes up the key search
- 32-bit AES key takes 20 mins
Link to this headingInjection Tricks
- Hit the Key Addition, Substitute, shift row or mix columns
- Check that exactly 4 output bytes have been changed.
- With every element in the same column there is overlapping faults
Link to this headingFault injection in automotive diagnostic protocols
Fault injection on automotive diagnostic protocols
Link to this headingSoftware Fault Injection
- Undervolting and Overvolting is possible through software.
- This is done by setting a register.
- This makes it set over all of the cores and triggers bit flips
Link to this headingRow Hammer
Accessing ROW 1 in RAM then row 3 multiple times may make row 2 bits flip.